import Vue from 'vue' //引用vue 使用Vue.set()方法为商品添加选中字段cheched 默认值为true
//存储购物车的数据包
export default {
    namespaced: true,
    state: () => ({
        goodscarlist: [{
                goodsIcon: "hot",
                goodsId: 121408,
                goodsImg: "/Public/upload/goods/2019/04-10/200x200/5cadf3b726009.jpg",
                goodsName: "Robert Oatley 酿酒师典藏霞多丽干白葡萄酒2017",
                goodsPayNum: 255,
                goodsPrice: "368.00",
                isIcon: 1,
                medicine_label: 0,
                product_label: "",
                storeId: 64,
                checked: true
            },
            {
                goodsIcon: "hot",
                goodsId: 121408,
                goodsImg: "/Public/upload/goods/2019/04-10/200x200/5cadf3b726009.jpg",
                goodsName: "Robert Oatley 酿酒师典藏霞多丽干白葡萄酒2017",
                goodsPayNum: 255,
                goodsPrice: "368.00",
                isIcon: 1,
                medicine_label: 0,
                product_label: "",
                storeId: 64,
                checked: true
            },

        ], //接收详情页的数据包
        // allchecked = true
    }),
    mutations: { //负责处理state中的数据，相当于组建中的methods
        addgoods(state, obj) {
            for (let i = 0; i < state.goodscarlist.length; i++) {
                if (state.goodscarlist[i].goodsId === obj.goodsId) {
                    state.goodscarlist[i].isIcon++
                        return //走进这个判断  且满足以上条件则退出循环   且不再执行后续代码
                }
            }
            //给新商品设定被选中状态,这种写法添加的属性是非响应式的
            Vue.set(obj, 'checked', true) //添加响应式数据字段
            state.goodscarlist.push(obj)
        },
        allchecked(state, bool) {
            for (let i = 0; i < state.goodscarlist.length; i++) {
                state.goodscarlist[i].checked = bool
            }
        },

        //删除
        detelechecked(state) {
            for (let i = 0; i < state.goodscarlist.length; i++) {
                if (state.goodscarlist[i].checked) {
                    state.goodscarlist.splice(i, 1) //正向删除法
                    i--
                }
            }
            // state.goodscarlist.forEach((obj, index) => {
            //     if (obj.checked) {
            //         state.goodscarlist.splice(index, 1)
            //         index--
            //     }
            // });
        }



        //控制全选框  通过全选框来取反单选框的checked值
        // ctrlallcheck(state, bool) {
        //     state.goodscarlist.forEach(item => { // 全选功能     bool代表原来的全选状态
        //         item.checked = !bool //bool表示全选框的选中情况  bool为ture 则表示全选框被选中，为false 则表示全选框未被选中
        //     }); //而  全选框是否被选中由所有单选框决定，所有单选框都被选中，则全选框也被选中bool为true，否则不被选中bool为false
        // },


        // checkMut(state, idx) {
        //     state.goodscarlist[idx].checked = !state.goodscarlist[idx].checked
        // }
    },
    getters: {
        allInfo: state => {
            let allprice = 0 //被选中的商品的总价
            let allchecked = true //全选
            state.goodscarlist.forEach(obj => {
                if (obj.checked) {
                    allprice += obj.isIcon * obj.goodsPrice //每个被选中的商品的数量与单价的总合
                        // allchecked = true //如果所有商品的checked为true 则全选框被选中
                }
                if (!obj.checked) { //如果所有商品选框有一个没有被选中的话  那就让allchecked值为false
                    allchecked = false
                }
            });
            return {
                allprice, //商品价格
                allchecked
            }
        },
    }
}